#ifndef PATTERN_H_
#define PATTERN_H_

//-----------------------------------------------------------------
// Includes
//-----------------------------------------------------------------
#include <opencv/cxcore.h>

namespace Calibration
{
	
	//-----------------------------------------------------------------
	// Cette classe décrit la mire de calibrage
	//-----------------------------------------------------------------
	class Pattern
	{
	public:
	
		//-------------------------------------------------------------
		// Constructeur
		// @param rows : nombre de ligne de la mire
		// @param columns : nombre de colonne de la mire
		// @param size : taille d'un carrée de la mire
		//-------------------------------------------------------------	
		Pattern( int rows, int columns, float size );
		
		//-------------------------------------------------------------
		// Destructeur
		//-------------------------------------------------------------
		virtual ~Pattern();
		
		//-------------------------------------------------------------
		// Retourne un tableau contenant l'ensemble des points 3D de la 
		// mire ordonnées de haut en bas et de gauche à droite 
		//-------------------------------------------------------------
		CvPoint3D32f* GetPatternPoints() const;
		
		//-------------------------------------------------------------
		// Accesseurs
		//-------------------------------------------------------------
		int GetNumberOfInnerCornersPerRow() const;
		int GetNumberOfInnerCornersPerColumn() const;
		int GetNumberOfInnerCorners() const;
		float GetSquareSize() const;
		
	private:
	
		//-------------------------------------------------------------
		// Attribut
		//-------------------------------------------------------------
		
		// Nombre de coin interne par ligne 
		int nbInnerCornersRow;
		
		// Nombre de coin interne par colonne
		int nbInnerCornersColumn;
		
		// Taille d'un carrée de la mire
		float squareSize;
		
		// Matrice contenant les coordonnées en 3D de tous les points de la mire
		CvPoint3D32f* innerCornersMatrix;
	};

}

#endif /*PATTERN_H_*/
